Use name instead of pid in QEMU logs.
authorkfraser@localhost.localdomain <kfraser@localhost.localdomain>
Mon, 4 Jun 2007 14:17:49 +0000 (15:17 +0100)
committerkfraser@localhost.localdomain <kfraser@localhost.localdomain>
Mon, 4 Jun 2007 14:17:49 +0000 (15:17 +0100)
Change the logfile name generated by qemu-dm to use the pattern
qemu-dm-[NAME].log instead of qemu-dm-[PID].log. This makes it
easier for the adminsitrator to figure out which log corresponds to
which guest (particularly after a crash where you no long know what
PID the qemu-dm process for your guest had). It also prevents the
number of log files from growing unbounded.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
tools/ioemu/target-i386-dm/exec-dm.c
tools/ioemu/vl.c

index 69525a97419863ca8db42bc1df30d1cdabc26898..ccdbd73bf77c3444116aa957504f4104d51b049c 100644 (file)
@@ -124,7 +124,6 @@ void *io_mem_opaque[IO_MEM_NB_ENTRIES];
 static int io_mem_nb = 1;
 
 /* log support */
-char *logfilename = "/tmp/qemu.log";
 FILE *logfile;
 int loglevel;
 
@@ -166,29 +165,28 @@ void cpu_exec_init(CPUState *env)
 void cpu_set_log(int log_flags)
 {
     loglevel = log_flags;
-    if (!logfile) {
-        logfile = fopen(logfilename, "w");
-        if (!logfile) {
-            perror(logfilename);
-            _exit(1);
-        }
-#if !defined(CONFIG_SOFTMMU)
-        /* must avoid mmap() usage of glibc by setting a buffer "by hand" */
-        {
-            static uint8_t logfile_buf[4096];
-            setvbuf(logfile, logfile_buf, _IOLBF, sizeof(logfile_buf));
-        }
-#else
-        setvbuf(logfile, NULL, _IOLBF, 0);
-#endif
-        stdout = logfile;
-        stderr = logfile;
-    }
+    if (!logfile)
+      logfile = stderr;
 }
 
 void cpu_set_log_filename(const char *filename)
 {
-    logfilename = strdup(filename);
+    logfile = fopen(filename, "w");
+    if (!logfile) {
+        perror(filename);
+       _exit(1);
+    }
+#if !defined(CONFIG_SOFTMMU)
+    /* must avoid mmap() usage of glibc by setting a buffer "by hand" */
+    {
+        static uint8_t logfile_buf[4096];
+       setvbuf(logfile, logfile_buf, _IOLBF, sizeof(logfile_buf));
+    }
+#else
+    setvbuf(logfile, NULL, _IOLBF, 0);
+#endif
+    stdout = logfile;
+    stderr = logfile;
 }
 
 /* mask must never be zero, except for A20 change call */
index 50a0a5b0e0754c188b85568b8162f5507db0bea4..d5f3dd3f8348f940fd4a659ae5d042101c7935a1 100644 (file)
@@ -7146,9 +7146,7 @@ int main(int argc, char **argv)
     nb_nics = 0;
     /* default mac address of the first network interface */
     
-    /* init debug */
-    sprintf(qemu_dm_logfilename, "/var/log/xen/qemu-dm.%ld.log", (long)getpid());
-    cpu_set_log_filename(qemu_dm_logfilename);
+    /* Init logs to stderr to start with */
     cpu_set_log(0);
     
     optind = 1;
@@ -7527,7 +7525,7 @@ int main(int argc, char **argv)
                 semihosting_enabled = 1;
                 break;
             case QEMU_OPTION_domainname:
-                strncat(domain_name, optarg, sizeof(domain_name) - 20);
+                strncpy(domain_name, optarg, sizeof(domain_name) - 1);
                 break;
             case QEMU_OPTION_d:
                 domid = atoi(optarg);
@@ -7550,6 +7548,10 @@ int main(int argc, char **argv)
         }
     }
 
+    /* Now send logs to our named config */
+    sprintf(qemu_dm_logfilename, "/var/log/xen/qemu-dm-%s.log", domain_name);
+    cpu_set_log_filename(qemu_dm_logfilename);
+
 #ifndef _WIN32
     if (daemonize && !nographic && vnc_display == NULL && vncunused == 0) {
        fprintf(stderr, "Can only daemonize if using -nographic or -vnc\n");